package com.jz.banner.screen.ui.service

/*

class AutoInstallService : AccessibilityService() {
    val TAG = AutoInstallService::class.java.simpleName.plus(":")
    private val DELAY_PAGE: Long = 320 // 页面切换时间
    private val mHandler = Handler()
    override fun onInterrupt() {
        CommUtils.println(TAG, "onInterrupt")
    }

    override fun onAccessibilityEvent(event: AccessibilityEvent?) {

        //不写完整包名，是因为某些手机(如小米)安装器包名是自定义的
        CommUtils.println(TAG, "onAccessibilityEvent 开始监听: $event")
        if (event == null || !event.packageName.toString().contains("packageinstaller"))
            return
        */
/*
		某些手机安装页事件返回节点有可能为null，无法获取安装按钮
		例如华为mate10安装页就会出现event.getSource()为null，所以取巧改变当前页面状态，重新获取节点。
		该方法在华为mate10上生效，但其它手机没有验证...(目前小米手机没有出现这个问题)
		*//*

        */
/* val eventNode = event.source
         if (eventNode == null) {
             performGlobalAction(GLOBAL_ACTION_RECENTS) // 打开最近页面
             mHandler.postDelayed({
                 performGlobalAction(GLOBAL_ACTION_BACK) // 返回安装页面
             }, DELAY_PAGE)
             return
         }*//*


        */
/*
		模拟点击->自动安装，只验证了小米5s plus(MIUI 9.8.4.26)、小米Redmi 5A(MIUI 9.2)、华为mate 10
		其它品牌手机可能还要适配，适配最可恶的就是出现安装广告按钮，误点安装其它垃圾APP（典型就是小米安装后广告推荐按钮，华为安装开始官方安装）
		*//*

        var rootNode: AccessibilityNodeInfo? = rootInActiveWindow ?: return //当前窗口根节点
        CommUtils.println(TAG, "rootNode: $rootNode")

        //if (isNotAD(rootNode))
        findTxtClick(rootNode, "安装") //一起执行：安装->下一步->打开,以防意外漏掉节点
        // findTxtClick(rootNode, "继续安装")
        //findTxtClick(rootNode, "下一步")
        findTxtClick(rootNode, "打开")
        // 回收节点实例来重用
        //eventNode.recycle()
        rootNode?.recycle()
    }


    // 查找安装,并模拟点击(findAccessibilityNodeInfosByText判断逻辑是contains而非equals)
    private fun findTxtClick(nodeInfo: AccessibilityNodeInfo?, txt: String) {
        var nodes = nodeInfo?.findAccessibilityNodeInfosByText(txt)
        if (nodes == null || nodes.isEmpty())
            return
        CommUtils.println(TAG, "findTxtClick: " + txt + ", " + nodes.size + ", " + nodes)
        //ToastUtil.showToast("findTxtClick: " + txt + ", " + nodes.size + ", " + nodes)
        nodes.forEach { node ->
            if (node.isEnabled && (node.className == "android.widget.Button" || node.className == "android.widget.TextView")) {
                node.performAction(AccessibilityNodeInfo.ACTION_CLICK)
            }
        }
    }

    override fun onDestroy() {
        ToastUtil.showToast(getString(R.string.app_name_auto_install).plus("停止了，请重新开启"))
        // 服务停止，重新进入系统设置界面
        AccessibilityUtil.jumpToSetting(this)
    }


    private fun isNotFind(rootNode: AccessibilityNodeInfo?, txt: String): Boolean {
        var nodes = rootNode?.findAccessibilityNodeInfosByText(txt)
        return nodes == null || nodes.isEmpty()
    }

    override fun onServiceConnected() {
        CommUtils.println(TAG, "onServiceConnected: ")
        ToastUtil.showToast(getString(R.string.app_name_auto_install).plus("开启了"))
        go2Login()

        //TODO： 服务开启，模拟两次返回键，退出系统设置界面（实际上还应该检查当前UI是否为系统设置界面，但一想到有些厂商可能篡改设置界面，懒得适配了...）
        performGlobalAction(GLOBAL_ACTION_BACK)
        mHandler.postDelayed({
            performGlobalAction(GLOBAL_ACTION_BACK)
        }, DELAY_PAGE)
    }

    private fun go2Login() {
        val i = Intent(this, LoginActivity::class.java)
       // i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
        i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
        startActivity(i)
    }
}*/
